将一个动态 SVG 动图转成10K视频

 

SVG 格式是什么?SVG 格式是一种基于可扩展标记语言(XML)的矢量图形格式,全称为可伸缩矢量图形(Scalable Vector Graphics)。SVG 图像在放大或缩小时能够保持图形质量,常用于网站图标、图表、动画等。

理论上 SVG 可以无损的放大到任意尺寸。

动态 SVG 来源

http://samherbert.net/svg-loaders/

我拿最后一个做的实验。

 

将 SVG 转成帧

因为不熟悉 SVG 的语法, 我让GPT 帮我做了。 我的Prompt是:

我给的 Prompt 是 256 帧。改成其他也行。

这是 GPT 给我的代码:

这是生成的 SVG:

将生成SVG Frames 转成 png

将生成 SVG Frames 转成 png 用的是 “inkscape.exe”, 我试过几个原生Python 方案, 效果都不理想, 有系统原因跑不起来, 也有转换后丢失通明通道的关系。

这是代码:

这是生成的 png

 

来看看 svg 转成的 10K png 有多清晰。

用 png 合成视频

ffmpeg -r 2 -i frames\%03d.png -c:v libx264 -profile:v high -pix_fmt yuv420p -y out.mp4

这是合成出来的视频video 浏览器,以及大多数的播放器应该都播放不了。

P.S.

遇到的坑:

合成出来 10K视频用普通播放器播放不了。 我一度以为什么 视频编码的问题, 其实并不是。 最后,成功用ffplay 播放出来了.